#include<bits/stdc++.h>

using namespace std;
const int maxn = 4e5 + 100;

int data[maxn], head = maxn / 2, tail = head - 1;//deque
int a[maxn], n;

int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    //反序头部入队，进队前要把队列的末尾元素转移到队头
    for (int i = n - 1; i >= 0; i--) {
        if (tail > head) {
            int x = data[tail--];
            data[--head] = x;
        }
        data[--head] = a[i];
    }
    while (head <= tail) {
        cout << data[head++] << " ";
    }
    return 0;
}


//deque FIFO (First In First  Out) 双向队列（允许头部、尾部加入元素，也允许头部/尾部弹出元素 ）
int data[maxn], head = maxn / 2, tail = head - 1;//deque
//1 2 3 4 5 依次进队
//重复输出队头元素 直到队列为空
//队列的常见操作

//1. 初始化空队列init  head=n/2,tail=head-1;
//2a. 尾部进队 push data[++tail]=x;
//2b. 头部进队 push data[--head]=x;
//3a. 头部出队 head++;
//3b. 尾部出队  tail--;
//4a. 查询队头（不弹出) data[head]
//4b. 查询队尾（不弹出) data[tail]